package com.ft.oa.domain.dto.sys;

import com.ft.oa.domain.sys.SysAuth;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;

/**
 * 菜单传输对象-前端定义
 */
@Data
public class MenuDto {

    /**
     * 主键
     */
    private Integer id;
    /**
     * 父级id
     */
    private Integer pid;
    /**
     * 菜单标题
     */
    private String title;

    /**
     * 显示顺序
     */
    private Integer level;
    /**
     * 菜单类型（0目录，1页面，2接口）
     */
    private Integer type;

    /**
     * 组件-前端需要
     */
    private String component;
    /**
     * 显示/隐藏
     */
    private Boolean hidden;
    /**
     * 图标url
     */
    private String iconUrl;
    /**
     * 名称-前端需要
     */
    private String name;
    /**
     * 路径-前端需要
     */
    private String path;
    /**
     * 接口地址
     */
    private String url;

    private Meta meta;

    private List<MenuDto> children;

    public static MenuDto authToMenu(SysAuth auth){
        MenuDto menuDto = new MenuDto();
        menuDto.setId(auth.getId());
        menuDto.setPid(auth.getPid());
        menuDto.setTitle(auth.getTitle());
        menuDto.setLevel(auth.getLevel());
        menuDto.setType(auth.getType());
        menuDto.setComponent(auth.getComponent());
        menuDto.setHidden(auth.getHidden());
        menuDto.setIconUrl(auth.getIconUrl());
        menuDto.setName(auth.getName());
        menuDto.setPath(auth.getPath());
        menuDto.setUrl(auth.getUrl());
        menuDto.setMeta(new Meta(auth.getTitle(), false));

        return menuDto;
    }


    @Data
    @AllArgsConstructor
    public static class Meta {

        private String title;

        private boolean noCache;
    }

}
